package com.example.demo.util;

//import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;

import java.io.File;

/**
 * @description：pdf操作工具类.
 * @author：lw
 * @create_time：2024/2/21
 **/
public class PdfUtil {
    // 它打开指定路径下的PDF文件，使用PDFTextStripper从文档中提取纯文本内容。
    public String extractTextFromPdf(String filePath) throws Exception {
        try (PDDocument document = PDDocument.load(new File(filePath))) {
            if (!document.isEncrypted()) {
                PDFTextStripper pdfStripper = new PDFTextStripper();
                return pdfStripper.getText(document);
            } else {
                // 如果PDF加密了，可能需要提供密码或其他解密方式
                throw new IllegalStateException("Document is encrypted, unable to extract text without password.");
            }
        }
    }



}

/*
PDFBox是一个开源的Java库，用于处理PDF（Portable Document Format）文档。它提供了丰富的API来创建、读取、更新和操作PDF文件。使用PDFBox，开发者可以实现以下功能：
创建新的PDF文档：从零开始构建PDF文档，包括添加页面、文本、图像、表格等元素。
修改现有PDF文档：插入、替换或删除页面内容；更改元数据如标题、作者等属性信息。
提取PDF内容：可以从PDF文档中抽取文本、图像和其他数据，进行进一步处理或分析。
签署PDF文档：支持数字签名，可以在PDF上添加电子签名或者验证已存在的签名。
合并/拆分PDF文档：将多个PDF文档合并成一个文档，或将单个文档分割成多个独立的文档。
加密与解密PDF：对PDF文档进行权限设置、用户认证以及加密保护。
PDFBox是Apache软件基金会下的一个项目，遵循BSD许可协议，广泛应用于各种需要处理PDF文件的场景，特别是在企业级应用和自动化工作流程中发挥重要作用。
*/
